This invention relates in general to a system and method for providing a real-time programmable interface to a general-purpose non-real-time computing system. More particularly, this invention relates to a method and apparatus providing a real-time programmable interface to a general-purpose non-real-time computing system used to implement a gaming machine using a platform independent programming language that is capable of operating within a distributed computing environment.
Computer-based gaming machines are becoming increasingly commonplace to construct gaming devices such as slot machines, video poker games, and video roulette wheels. These automated games utilize computing systems containing software modules to implement gaming logic. These computing systems also utilize computer video display devices and other computer controlled display devices to present gaming players with images of the various gaming apparatus being implemented.
These computer-based gaming systems replace mechanical systems such as slot machines comprising a plurality of rotating wheels and associated mechanical logic. The computing systems utilize a random number generator to determine a game outcome that statistically appears to be random in nature. The random numbers obtained from a random number-generating module are used to determine which symbols on the wheels of a slot machine are to be displayed when the game concludes a play. Similarly, these random numbers are used to shuffle standard decks of playing cards used in other games of chance.
These computer-based gaming machines also comprise software modules which when working together implement the rules of a particular game of chance. For a slot machine, these rules include the pay-out tables used to determine any winnings paid to a player for a particular combination of symbols shown on the rotating game wheels. Finally, the computer gaming machines comprise software modules which when working together display a series of images on the display device to simulate the appearance and operation of a gaming machine. These display modules typically comprise both video and audio output modules to provide a game player with a sensory experience comparable to the mechanical gaming machines.
Gaming machines that accept wagers and provide winning payouts are under a wide variety of regulatory oversight procedures and provisions from authorities of the various jurisdictions that permit the use of these devices. These oversight procedures and provisions are concerned in part with providing a level of assurance that the games operate in the manner advertised. The operation of the behavior of the random number generator, its relationship to the outcome of the game implemented, and the winning pay-out tables are part of the functions of these gaming devices which are inspected. The procedures for obtaining regulatory approval for each gaming device may be a long, complicated, and expensive undertaking on the part of the gaming machine manufacturer and its customers, gaming establishment operators.
At the same time, these computer controlled gaming machines are becoming based upon standard computing system components to reduce the cost of the development and deployment of these gaming machines. This reduction in cost occurs from the ability to develop multiple gaming machine implementations based upon a single gaming machine architecture. As part of the effort to allow the development of multiple gaming machine implementations based upon a single computer based gaming machine architecture, two additional inventions have been developed.
Typically, the gaming application modules have not been developed using a platform independent programming environment, high-level programming languages, and modern operating system that are needed to support both a rapid and efficient gaming application module development process as well as support game application execution within a distributed processing environment. This situation has caused each gaming application module to be a custom written programming module that does not typically contain a significant amount of reusable code that would permit a simple and easy modification of an existing game to support an new implementation. Part of the problems associated with the failure to use these more modern programming environments is the need to real-time or near-real-time response times to the occurrence of state changes on external signals representing inputs from gaming machine user interface module.
With the ability to more easily obtain approval for new gaming implementations and the ability to rapidly change from one game to another while meeting the demands of the gaming regulators, gaming establishments are provided with an improved ability to more readily change the gaming devices present in their establishments to satisfy the interests of their gaming players. The present invention provides a software architecture for implementing computer-based gaming machines to address the above problems in prior systems.
To overcome the limitations in the prior art described above, and to overcome other limitations that will become apparent upon reading and understanding the present specification, the present invention discloses a system and method for providing a real-time programmable interface to a general-purpose non-real-time computing system. The present invention solves the above-described problems by providing a method and apparatus providing a real-time programmable interface to a general-purpose non-real-time computing system used to implement a gaming machine using a platform independent programming language that is capable of operating within a distributed computing environment.
Other embodiments of a system in accordance with the principles of the invention may include alternative or optional additional aspects. One such aspect of the present invention is a method for providing read-time external signals to a platform independent programming environment executing upon a computing system. The computing system includes an input packet queue, an main processing module, and an intelligent I/O interface module. The intelligent I/O interface module has a control processor, an plurality of external signal interfaces, and a dual-port RAM. The method comprises detecting a change in state of at least one of the external signals by the control processor, generating a interface state packet containing representations of the current state of all external interface signals, storing the interface state packet within the dual-port RAM, asserting an interrupt signal from the control processor to the main processing module to indicate the presence of the interface state packet within the dual-port RAM; and receiving an acknowledgement signal asserted by the main processing module to indicate that the main processing module has transferred the interface state packet from the dual-port RAM to the input packet queue.
Another aspect of the present invention is a method for providing read-time external signals to a platform independent programming environment executing upon a computing system. The computing system includes an input packet queue, an main processing module, and an intelligent I/O interface module. The intelligent I/O interface module has a control processor, an plurality of external signal interfaces, and a dual-port RAM. The method comprises receiving an interrupt signal from the control processor by the main processing module to indicate the presence of the interface state packet within the dual-port RAM, transferring the interface state packet from the dual-port RAM to an input packet queue, and generating an acknowledgment signal asserted by the main processing module to the control processor to indicate that the main processing module has transferred the interface state packet from the dual-port RAM to the input packet queue
Yet another aspect of the present invention is a method for providing read-time external signals from a platform independent programming environment executing upon a computing system. The computing system has an input packet queue, an main processing module, and an intelligent I/O interface module. The intelligent I/O interface module includes a control processor, an plurality of external signal interfaces, and a dual-port RAM. The method comprises receiving a output change in state command from the main processing module for least one of the external signals, decoding the output change in state command by the control processor, generating a change in state for at least one external output signal by the control processor, and transmitting an acknowledgement signal to the main processing module to indicate that output state in change command has been completed by the control processor.
Yet another aspect of the present invention is a method for providing real-time external signals from a platform independent programming environment executing upon a computing system. The computing system includes an input packet queue, a main processing module, and an intelligent I/O interface module. The intelligent I/O interface module has a control processor, an plurality of external signal interfaces, and a dual-port RAM. The method comprises generating a output change in state command by the main processing module for least one of the external signals and storing the output change in state command within the dual-port RAM, retrieving the output change in state command from the dual-port RAM and decoding the output change in state command by the control processor, generating a change in state for at least one external output signal by the control processor, and receiving an acknowledgement signal by the main processing module to indicate that output state in change command has been completed by the control processor.
Yet another aspect of the present invention is a method for providing real-time external signals to and from a gaming application executing within a platform independent programming environment on a computing system. The computing system having an input packet queue, an main processing module, and an intelligent I/O interface module. The intelligent I/O interface module having a control processor, an plurality of external signal interfaces, and a dual-port RAM. The method comprises detecting a change in state of at least one of the external signals by the control processor, generating a interface state packet containing representations of the current state of all external interface signals, storing the interface state packet within the dual-port RAM, asserting an interrupt signal from the control processor to the main processing module to indicate the presence of the interface state packet within the dual-port RAM. The method further comprises receiving an acknowledgement signal asserted by the main processing module to indicate that the main processing module has transferred the interface state packet from the dual-port RAM to the input packet queue, receiving a output change in state command from the main processing module for least one of the external signals, decoding the output change in state command by the control processor, generating a change in state for at least one external output signal by the control processor, and transmitting an acknowledgement signal to the main processing module to indicate that output state in change command has been completed by the control processor.
Yet another aspect of the present invention is a system for providing real-time external signals to and from a gaming application executing within a platform independent programming environment on a computing system. The system comprises an input packet queue located within a block of system RAM coupled to a main system bus, a main processing module coupled to the main system bus, and an intelligent I/O interface module coupled to the main system bus for generating an input signal data packet in response to a change in state of one or more external signals. The intelligent I/O interface module comprises a control processor, an plurality of external signal interfaces, and a dual-port RAM. The control processor generates and stores the input signal data packet within the dual-port RAM before asserting an interrupt signal to the main processing module. Finally, the interrupt signal causes the main processing module to transfer the input signal data packet from the dual-port RAM to the input packet queue.
Yet another aspect of the present invention is a apparatus for providing read-time external signals to and from a gaming application executing within a platform independent programming environment on a computing system. The computing system having an input packet queue, an main processing module, and an intelligent I/O interface module. The intelligent I/O interface module having a control processor, an plurality of external signal interfaces, and a dual-port RAM. The apparatus comprises means for detecting a change in state of at least one of the external signals by the control processor, means for generating a interface state packet containing representations of the current state of all external interface signals, means for storing the interface state packet within the dual-port RAM, means for asserting an interrupt signal from the control processor to the main processing module to indicate the presence of the interface state packet within the dual-port RAM, means for receiving an acknowledgment signal asserted by the main processing module to indicate that the main processing module has transferred the interface state packet from the dual-port RAM to the input packet queue, means for receiving a output change in state command from the main processing module for least one of the external signals, means for decoding the output change in state command by the control processor, means for generating a change in state for at least one external output signal by the control processor; and means for transmitting an acknowledgment signal to the main processing module to indicate that output state in change command has been completed by the control processor.